package com.delio.server.pagos.ingresos;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.delio.client.pagos.ingresos.Ingreso;
import com.delio.client.pagos.ingresos.PagoIngreso;
import com.delio.server.base.Conexion;
import com.ibatis.sqlmap.client.SqlMapClient;

public class PagoIngresos {
	private static SqlMapClient sqlMap = null;

	public static boolean save(List<PagoIngreso> pi) {
		boolean respuesta = true;
		sqlMap = Conexion.getSqlMap();
        Integer contrato_id=0;
		try {
			for (PagoIngreso p : pi) {
				if (p.getId() != null)
					sqlMap.update("updatePagoIngresos", p);
				else
					sqlMap.insert("insertPagoIngresos", p);
				
				contrato_id=p.getContrato_id();
			}
			
			updateControlPagoIngreso(contrato_id);

		} catch (SQLException e) {
			respuesta = false;
			e.printStackTrace();
		}
		return respuesta;
	}

	@SuppressWarnings("unchecked")
	public static List<PagoIngreso> getPagoIngresos(Integer contrato_id) {
		sqlMap = Conexion.getSqlMap();
		List<PagoIngreso> data = null;
		try {
			data = sqlMap.queryForList("getPagoIngresos", contrato_id);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return data;
	}

	public static boolean save(Ingreso in) {
		boolean respuesta = true;
		sqlMap = Conexion.getSqlMap();

		try {

			if (in.getId() != null)
				sqlMap.update("updateIngresos", in);
			else
				sqlMap.insert("insertIngresos", in);
			
			

		} catch (SQLException e) {
			respuesta = false;
			e.printStackTrace();
		}
		return respuesta;
	}

	@SuppressWarnings("unchecked")
	public static List<Ingreso> getIngresos(Integer tipoingreso_id) {
		sqlMap = Conexion.getSqlMap();
		List<Ingreso> data = null;
		try {
			data = sqlMap.queryForList("getIngresos", tipoingreso_id);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return data;
	}

	public static boolean delete(Integer id) {

		boolean respuesta = true;

		sqlMap = Conexion.getSqlMap();
		try {
			if (id != null)
				sqlMap.delete("deleteIngreso", id);
			else
				respuesta = false;

		} catch (SQLException e) {

			e.printStackTrace();

			respuesta = false;

		}
		return respuesta;

	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static void updateControlPagoIngreso(Integer contrato_id) {
		sqlMap = Conexion.getSqlMap();

		try {

			sqlMap.startTransaction();
			Map m = new HashMap(1);
			m.put("contrato_id", contrato_id);

			sqlMap.update("updateControlPagoIngreso", m);
			sqlMap.commitTransaction();
			sqlMap.endTransaction();

		} catch (SQLException e) {

			e.printStackTrace();
		}

	}

}
